import csv
import requests
from bs4 import BeautifulSoup


# 创建一个名为 下厨房本周最受欢迎菜谱.csv 的文件
with open(r'下厨房本周最受欢迎菜谱.csv', 'w', newline='', encoding='utf-8-sig') as f:
    # 实例化writer对象
    writer = csv.writer(f)
    # 向csv文件写入标题
    writer.writerow(['菜名', '食材', '链接'])

    
    # 请求头
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36'}
    # 发起请求
    res = requests.get('http://www.xiachufang.com/explore/', headers=headers)
    # 打印状态码 200表正常响应
    print(res.status_code)
    # 定义Response对象的编码类型
    res.encoding = 'utf-8'
    # 将Response对象转换为字符串数据
    html = res.text
    
    # 括号中的第0个参数必须是字符串类型,第1个参数是解析器
    soup = BeautifulSoup(html, 'html.parser')
    # 提取含有 菜名 的html源码
    items = soup.find_all('p', class_='name')
    # 提取含有 食材 的html源码
    ingredients = soup.find_all('p', class_='ing ellipsis')

    for item in range(len(items)):
        # 从html源码依次提取出 [菜名,食材,链接]
        items_all = [
                    items[item].find('a').text[17:-14],
                    ingredients[item].text[1:-1],
                    'http://www.xiachufang.com' + items[item].find('a')['href']
                    ]

        # 将BeautifulSoup提取出的数据写入csv文件
        writer.writerow(items_all)
